home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_NITRO.ZIP / WCW Nitro.txt < prev    next >
Text File  |  1999-01-23  |  13KB  |  284 lines

  1.  
  2. Free Information Xchange presents:
  3.  
  4. WCW Nitro - CD crack by Static Vengeance - Dec 28th, 1998
  5.  
  6.     The idea of a wrestling game & D3D together is a good one!  However, this is a poor attempt
  7. at this concept.  The game is slow even with a fast CPU and a voodoo2 card.  The controls are poorly
  8. thought out and the response to those are too slow to be fun.  I've played simular games on the Play
  9. Station which were very fast and responsive with better graphics!?!  I don't know what the developers
  10. where thinking with port but it sucks.  Not only is the game crappy, but there is a CD check as well.
  11. Well we can FiX that part of this game.  You could actually watch Nitro and get better sound clips to
  12. use in the game... but the graphics are so poor it's not worth the effort.
  13.     Anyways, let's cracked this one.  After disassembling the nitro.exe and looking for Data string
  14. references you'll find "The WCW Nitro PC CD must be in "  Just double click this and you'll be in the
  15. middle of this routine:
  16.  
  17.   -- Program code --
  18. :00405BA4 33C0                    xor eax, eax
  19. :00405BA6 5B                      pop ebx
  20. :00405BA7 81C4AC000000            add esp, 000000AC
  21. :00405BAD C21000                  ret 0010
  22.  
  23. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  24. |:00405B8F(C)                                                       <-- Gets here normally, but needed
  25. |
  26. :00405BB0 E86B110000              call 00406D20        <-- Stores all kinds of values in memory
  27. :00405BB5 E8A60A0000              call 00406660        <-- Get current dir and set to "Source Dir"
  28. :00405BBA 85C0                    test eax, eax        <--  from the registry string
  29. :00405BBC 0F84A6010000            je 00405D68
  30. :00405BC2 E879090000              call 00406540        <-- Check for the CD - look for "LAUNCHER.EXE"
  31. :00405BC7 85C0                    test eax, eax        <-- Test flag value in eax
  32. :00405BC9 7521                    jne 00405BEC         <-- Take this jump for CD "found"
  33. :00405BCB 53                      push ebx
  34.  
  35. * Possible StringData Ref from Data Obj ->"Error"      <-- Otherwise tell "evil" user the news
  36.                                   |
  37. :00405BCC 68C8744300              push 004374C8
  38.  
  39. * Possible StringData Ref from Data Obj ->"The WCW Nitro PC CD must be in "  <-- Never want to see this!
  40.                                         ->"the drive to play."
  41.                                   |
  42. :00405BD1 68DC944300              push 004394DC
  43. :00405BD6 53                      push ebx
  44.  
  45. * Reference To: USER32.MessageBoxA, Ord:01BEh
  46.                                   |
  47. :00405BD7 FF1570314300            Call dword ptr [00433170]
  48. :00405BDD 5F                      pop edi
  49. :00405BDE 5E                      pop esi
  50. :00405BDF 5D                      pop ebp
  51. :00405BE0 33C0                    xor eax, eax
  52. :00405BE2 5B                      pop ebx
  53. :00405BE3 81C4AC000000            add esp, 000000AC
  54. :00405BE9 C21000                  ret 0010
  55.  
  56. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  57. |:00405BC9(C)                                                        <-- Must get here to continue
  58. |
  59. :00405BEC E8AF090000              call 004065A0
  60. :00405BF1 85C0                    test eax, eax
  61. :00405BF3 751F                    jne 00405C14
  62. :00405BF5 53                      push ebx
  63. :00405BF6 6A01                    push 00000001
  64. :00405BF8 E863F3FFFF              call 00404F60
  65. :00405BFD 83C408                  add esp, 00000008
  66. :00405C00 E80BF4FFFF              call 00405010
  67. :00405C05 5F                      pop edi
  68. :00405C06 5E                      pop esi
  69. :00405C07 5D                      pop ebp
  70. :00405C08 33C0                    xor eax, eax
  71. :00405C0A 5B                      pop ebx
  72. :00405C0B 81C4AC000000            add esp, 000000AC
  73. :00405C11 C21000                  ret 0010
  74.   -- Continuing program code & various routines --
  75.  
  76.     All you need to do is to kill the call to the CD check by overwriting with mov eax, 00000001
  77. This will force the jne at 405BC9 to always be taken, which in turns allows the program to continue.
  78. With this edit the game will continue as though the CD where in the drive.  So let's take a quick
  79. look at how the CD is checked for, first setting up the right directory from the code at 406660:
  80.  
  81. * Referenced by a CALL at Address:
  82. |:00405BB5                                         <-- Called once from above routine
  83. |
  84. :00406660 6AFF                    push FFFFFFFF
  85. :00406662 6848294300              push 00432948
  86. :00406667 64A100000000            mov eax, dword ptr fs:[00000000]
  87. :0040666D 50                      push eax
  88. :0040666E 64892500000000          mov dword ptr fs:[00000000], esp
  89. :00406675 83EC08                  sub esp, 00000008
  90. :00406678 56                      push esi
  91. :00406679 8D4C2404                lea ecx, dword ptr [esp+04]
  92. :0040667D E8BED30000              call 00413A40
  93.  
  94. * Possible StringData Ref from Data Obj ->"Software\THQ\WCW Nitro PC\1.0"  <-- Registry key to open
  95.                                   |
  96. :00406682 6838954300              push 00439538
  97. :00406687 6802000080              push 80000002
  98. :0040668C 8D4C240C                lea ecx, dword ptr [esp+0C]
  99. :00406690 C744241C00000000        mov [esp+1C], 00000000
  100. :00406698 E8B3D30000              call 00413A50
  101. :0040669D 85C0                    test eax, eax
  102. :0040669F 7523                    jne 004066C4
  103. :004066A1 8D4C2404                lea ecx, dword ptr [esp+04]
  104. :004066A5 C7442414FFFFFFFF        mov [esp+14], FFFFFFFF
  105. :004066AD E8BEA9FFFF              call 00401070
  106. :004066B2 33C0                    xor eax, eax
  107. :004066B4 5E                      pop esi
  108. :004066B5 8B4C2408                mov ecx, dword ptr [esp+08]
  109. :004066B9 64890D00000000          mov dword ptr fs:[00000000], ecx
  110. :004066C0 83C414                  add esp, 00000014
  111. :004066C3 C3                      ret
  112.  
  113. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  114. |:0040669F(C)
  115. |
  116. :004066C4 689C1B4500              push 00451B9C
  117.  
  118. * Possible StringData Ref from Data Obj ->"Source Dir"          <-- Where the game was installed from
  119.                                   |
  120. :004066C9 682C954300              push 0043952C
  121. :004066CE 8D4C240C                lea ecx, dword ptr [esp+0C]
  122. :004066D2 E849D40000              call 00413B20
  123.  
  124. * Reference To: KERNEL32.GetCurrentDirectoryA, Ord:00F5h        <-- What's the directory now
  125.                                   |
  126. :004066D7 8B35C8304300            mov esi, dword ptr [004330C8]
  127. :004066DD 85C0                    test eax, eax
  128. :004066DF 750C                    jne 004066ED
  129. :004066E1 689C1B4500              push 00451B9C
  130. :004066E6 68FF000000              push 000000FF
  131. :004066EB FFD6                    call esi
  132.  
  133. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  134. |:004066DF(C)
  135. |
  136. :004066ED 6844194500              push 00451944
  137.  
  138. * Possible StringData Ref from Data Obj ->"Path"       <-- Directory path where the game is installed
  139.                                   |
  140. :004066F2 6824954300              push 00439524
  141. :004066F7 8D4C240C                lea ecx, dword ptr [esp+0C]
  142. :004066FB E820D40000              call 00413B20
  143. :00406700 85C0                    test eax, eax
  144. :00406702 750C                    jne 00406710
  145. :00406704 6844194500              push 00451944
  146. :00406709 68FF000000              push 000000FF
  147. :0040670E FFD6                    call esi
  148.  
  149. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  150. |:00406702(C)
  151. |
  152. :00406710 57                      push edi
  153. :00406711 6844194500              push 00451944
  154.  
  155. * Reference To: KERNEL32.SetCurrentDirectoryA, Ord:025Dh   <-- Set it for the CD/file check
  156.                                   |
  157. :00406716 FF15CC304300            Call dword ptr [004330CC]
  158. :0040671C 83CEFF                  or esi, FFFFFFFF
  159. :0040671F BF9C1B4500              mov edi, 00451B9C
  160. :00406724 8BCE                    mov ecx, esi
  161. :00406726 33C0                    xor eax, eax
  162. :00406728 F2                      repnz
  163. :00406729 AE                      scasb
  164. :0040672A F7D1                    not ecx
  165. :0040672C 49                      dec ecx
  166. :0040672D B05C                    mov al, 5C
  167. :0040672F 5F                      pop edi
  168. :00406730 38819B1B4500            cmp byte ptr [ecx+00451B9B], al
  169. :00406736 740D                    je 00406745
  170. :00406738 88819C1B4500            mov byte ptr [ecx+00451B9C], al
  171. :0040673E C6819D1B450000          mov byte ptr [ecx+00451B9D], 00
  172.  
  173. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  174. |:00406736(C)
  175. |
  176. :00406745 8D4C2404                lea ecx, dword ptr [esp+04]
  177. :00406749 E8F2D40000              call 00413C40
  178. :0040674E 85C0                    test eax, eax
  179. :00406750 750A                    jne 0040675C
  180. :00406752 C705301D450001000000    mov dword ptr [00451D30], 00000001
  181.  
  182. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  183. |:00406750(C)
  184. |
  185. :0040675C 8D4C2404                lea ecx, dword ptr [esp+04]
  186. :00406760 E84BD30000              call 00413AB0
  187. :00406765 85C0                    test eax, eax
  188. :00406767 89742414                mov dword ptr [esp+14], esi
  189. :0040676B 8D4C2404                lea ecx, dword ptr [esp+04]
  190. :0040676F 7517                    jne 00406788                  <-- Need to take this to continue
  191. :00406771 E8FAA8FFFF              call 00401070
  192. :00406776 33C0                    xor eax, eax
  193. :00406778 5E                      pop esi
  194. :00406779 8B4C2408                mov ecx, dword ptr [esp+08]
  195. :0040677D 64890D00000000          mov dword ptr fs:[00000000], ecx
  196. :00406784 83C414                  add esp, 00000014
  197. :00406787 C3                      ret
  198.  
  199. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  200. |:0040676F(C)
  201. |
  202. :00406788 E8E3A8FFFF              call 00401070
  203. :0040678D 8B4C240C                mov ecx, dword ptr [esp+0C]
  204. :00406791 B801000000              mov eax, 00000001
  205. :00406796 5E                      pop esi
  206. :00406797 64890D00000000          mov dword ptr fs:[00000000], ecx
  207. :0040679E 83C414                  add esp, 00000014
  208. :004067A1 C3                      ret
  209.  
  210.     Now a look at the short code that checks for the file on the CD:
  211.  
  212. * Referenced by a CALL at Address:
  213. |:00405BC2                                 <-- Called only once from the first section of code shown
  214. |
  215. :00406540 81EC00010000            sub esp, 00000100
  216. :00406546 8D442400                lea eax, dword ptr [esp]
  217. :0040654A 56                      push esi
  218. :0040654B 689C1B4500              push 00451B9C
  219. :00406550 50                      push eax
  220. :00406551 BE01000000              mov esi, 00000001
  221.  
  222. * Reference To: KERNEL32.lstrcpyA, Ord:0302h
  223.                                   |
  224. :00406556 FF1508314300            Call dword ptr [00433108]
  225. :0040655C 8D4C2404                lea ecx, dword ptr [esp+04]
  226.  
  227. * Possible StringData Ref from Data Obj ->"LAUNCHER.EXE"         <-- Check for this file
  228.                                   |
  229. :00406560 6814954300              push 00439514
  230. :00406565 51                      push ecx
  231.  
  232. * Reference To: KERNEL32.lstrcatA, Ord:02F9h
  233.                                   |
  234. :00406566 FF15D0304300            Call dword ptr [004330D0]
  235. :0040656C 8D542404                lea edx, dword ptr [esp+04]
  236.  
  237. * Possible StringData Ref from Data Obj ->"r"                   <-- Read the file
  238.                                   |
  239. :00406570 6810954300              push 00439510
  240. :00406575 52                      push edx
  241. :00406576 E82E4D0200              call 0042B2A9
  242. :0040657B 83C408                  add esp, 00000008
  243. :0040657E 85C0                    test eax, eax
  244. :00406580 7508                    jne 0040658A
  245. :00406582 5E                      pop esi
  246. :00406583 81C400010000            add esp, 00000100
  247. :00406589 C3                      ret
  248.  
  249.     With the forementioned edit you have a copy of WCW Nitro on your hard drive.  The only difference
  250. is the movies will not be played.  If you really want the movies and have an extra 180 megs for them you
  251. can copy the "\movies" subdirectory to the WCW Nitro game directory.  Then, to allow nitro.exe to find the
  252. the newly copied movies, run regedit.exe (in your windows directory) and go to and open the following key:
  253. HKEY_LOCAL_MACHINE\Software\THQ\WCW Nitro PC\1.0 then change the "Source Dir" to the same directory string
  254. found in "Path"  If you do that, you'll have a 100% working copy on WCW Nitro on your hard drive.  Except
  255. this version doesn't care where the original CD is.  All the steps in order:
  256.  
  257. 1.  Install the game
  258. 2.  Make the following edit
  259.  
  260. Edit nitro.exe  at offset 23,490
  261. ================================
  262. Search for: E8 79 09 00 00
  263. Change to : B8 01 00 00 00
  264.  
  265. For wcwpatch1216 off the net
  266. Edit nitro.exe  at offset 23,566
  267. ================================
  268. Search for: E8 6D 09 00 00
  269. Change to : B8 01 00 00 00
  270.  
  271. 3.  Enjoy the game (if you can)
  272.  
  273. Optional:
  274.  
  275. 4.  Copy the "\Movies" directory to the game directory
  276. 5.  Run regedit.exe and open the following key:
  277.    HKEY_LOCAL_MACHINE\Software\THQ\WCW Nitro PC\1.0
  278. 6.  Change "Source Dir" to match "Path"
  279.  
  280.     Once again, another game has been FiX'ed!  With or without the movies you still wont need
  281. the original CD in the CD Rom drive.
  282.  
  283. Static Vengeance
  284.